#pragma once 

#include <unistd.h>
#include <sys/syscall.h>

//获取当前线程的tid
namespace CurrentThread
{
    //__thread, 线程局部存储设施。__thread修饰的变量，每个线程都有一个独立的实体
    extern __thread int t_cachedTid;

    void cacheTid();

    inline int tid()
    {
        //__builtin_expect(EXP, N)。意思是：EXP==N的概率很大。整体的返回值就是EXP的值
        if(__builtin_expect(t_cachedTid==0,0))
        {
            cacheTid();
        }
        return t_cachedTid;
    }

}